CSI ossfs版本升级与挂载流程优化

通过CSI挂载OSS存储卷时,CSI组件会使用ossfs将OSS Bucket挂载到节点文件系统。v1.30.4-*版本的CSI组件(包括csi-plugin组件和csi-provisioner组件)升级了ossfs的默认版本,并优化了挂载流程。

变更内容及解决方案

ossfs版本升级

在v1.30.4-*版本中,csi-plugin组件和csi-provisioner组件默认使用的ossfs版本将升级至v1.91.3。关于ossfs版本的介绍,请参见ossfs版本说明;关于1.91及以上版本的介绍, 请参见ossfs 1.91及以上版本新功能介绍及性能压测

如果您仍然需要使用v1.88版本的ossfs,请参见如下步骤操作。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 单击存储页签,分别定位csi-plugin组件和csi-provisioner组件,单击组件卡片的配置,配置两个组件的FeatureGate为UpdatedOssfsVersion=false

ossfs Pod命名空间切换为ack-csi-fuse

旧版本CSI挂载OSS Bucket时会自动创建对应的ossfs Pod,位于kube-system命名空间下。自v1.30.4-*版本起,ossfs Pod所在的命名空间将切换至ack-csi-fuse。

若您在v1.30.4-*版本前通过RRSA鉴权方式挂载了OSS存储卷,由于Pod的命名空间变更,升级版本至v1.30.4-*版本前,需要追加RAM角色的授权主体,否则新挂载OSS存储卷的Pod将启动失败。

请参见如下步骤修改信任策略。

  1. 使用阿里云账号登录RAM控制台

  2. 在左侧导航栏,选择身份管理 > 角色

  3. 角色页面,搜索对应RAM角色,单击角色名称,然后单击信任策略页签,根据页面提示编辑信任策略。

    您可以参考以下示例修改信任策略,在oidc:sub处追加ack-csi-fuse命名空间下的ServiceAccount。

    假设原信任策略为:

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "oidc:aud": [
                "sts.aliyuncs.com"
              ],
              "oidc:iss": "https://oidc-ack-cn-beijing.oss-cn-beijing.aliyuncs.com/c747b09ddd6664d33ad3939**********",
              "oidc:sub": "system:serviceaccount:kube-system:csi-fuse-ossfs"
            }
          },
          "Effect": "Allow",
          "Principal": {
            "Federated": [
              "acs:ram::130155**********:oidc-provider/ack-rrsa-c747b09ddd6664d33ad3939**********"
            ]
          }
        }
      ],
      "Version": "1"
    }

    修改后的信任策略为:

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "oidc:aud": [
                "sts.aliyuncs.com"
              ],
              "oidc:iss": "https://oidc-ack-cn-beijing.oss-cn-beijing.aliyuncs.com/c747b09ddd6664d33ad3939**********",
              "oidc:sub": "system:serviceaccount:kube-system:csi-fuse-ossfs"
            }
          },
          "Effect": "Allow",
          "Principal": {
            "Federated": [
              "acs:ram::130155**********:oidc-provider/ack-rrsa-c747b09ddd6664d33ad3939**********"
            ]
          }
        },
        {
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "oidc:aud": [
                "sts.aliyuncs.com"
              ],
              "oidc:iss": "https://oidc-ack-cn-beijing.oss-cn-beijing.aliyuncs.com/c747b09ddd6664d33ad3939**********",
              "oidc:sub": "system:serviceaccount:ack-csi-fuse:csi-fuse-ossfs" 
            }
          },
          "Effect": "Allow",
          "Principal": {
            "Federated": [
              "acs:ram::130155**********:oidc-provider/ack-rrsa-c747b09ddd6664d33ad3939**********"
            ]
          }
        }
      ],
      "Version": "1"
    }

不再支持自定义ossfs镜像

v1.30.4-*版本的CSI不再支持通过csi-plugin ConfigMap自定义ossfs镜像。

注意事项

  • 通过容器服务管理控制台的组件管理页面升级csi-plugin组件版本到v1.30.4-*及以上版本后,集群会自动使用新版挂载流程。csi-plugin组件版本升级后,挂载了OSS存储卷的存量Pod仍会正常运行,不受影响。

  • 升级csi-plugin组件到v1.30.4-*及以上版本前,请安装最新版本的csi-provisioner组件,或升级csi-provisioner(托管版或非托管版)组件至v1.30.4-*及以上版本。

相关文档

关于CSI组件的变更记录及说明,请参见csi-plugincsi-provisioner